/**
 * 扁平化：将具有层级递进关系结构的 tree 数据扁平化
 *
 * @param treeList 有层级递进关系结构的 tree 数据
 * @param flatList 用于接收扁平化结果的变量
 * @returns {*} 返回扁平化结果
 */
const treeToFlat = (treeList = [], flatList = [], children = 'items') => {
  // flatList.length > 999 是考虑底线保护原则，出于极限保护的目的设置的，可不设或按需设置。
  if (flatList.length > 9999) {
    return
  }

  treeList.map((e) => {
    flatList.push(e)

    // 递归：有条件的自己调用自己，条件是 e[children].length 为真
    if (e[children] && e[children].length) {
      treeToFlat(e[children], flatList)
    }
  })

  // console.log('扁平化后：', flatList)
  return flatList
}

export default treeToFlat
